package com.labot.service;

import com.labot.dao.PedidoNoConformeDao;
import com.labot.dao.UserDao;
import com.labot.model.PedidoNoConforme;
import com.labot.model.PedidoNoConformeBitacora;
import com.labot.model.User;

import org.springframework.security.core.userdetails.UsernameNotFoundException;

import java.util.Date;
import java.util.List;
import java.util.Set;


/**
 * Business Service Interface to handle communication between web and
 * persistence layer.
 *
 * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a>
 *  Modified by <a href="mailto:dan@getrolling.com">Dan Kibler </a>
 */
public interface PedidoNoConformeManager extends GenericManager<PedidoNoConforme, Long> {
  
	
    void setPedidoNoConformeDao(PedidoNoConformeDao pedidonoconformeDao);

  
    List<PedidoNoConforme> getNuevaMuestrasByCentro(Long id) throws Exception;
    
    
    List<PedidoNoConforme> getNuevaMuestrasporRango(Date fechadesde, Date fechahasta) throws Exception;
    
    
    Set<PedidoNoConformeBitacora> getBitacorasNuevaMuestra(Long idNuevaMuestra) throws Exception;
  
    
    List<PedidoNoConforme> getNuevaMuestras();
    
    List<PedidoNoConforme> getTodos();
    
    List<PedidoNoConforme> getFiltrados(Long idareasolicita, String reclamo, String estado, String urgente, String muestra, Long idclasificacion, Date fechadesde, Date fechahasta, String numeroprotocolo);
    
    List<PedidoNoConforme> getNuevaMuestrasRegistradoNoUrgentes();
    
    List<PedidoNoConforme> getNuevaMuestrasUrgentes();
    
    List<PedidoNoConforme> getNuevaMuestrasEnProceso();
    
    List<PedidoNoConforme> getNuevaMuestrasAvisado();
    
    List<PedidoNoConforme> getNuevaMuestrasCerradas();
    
    PedidoNoConforme buscarNuevaMuestra(Long id);


    PedidoNoConforme saveNuevaMuestra(PedidoNoConforme nuevamuestra);

   
    void removeNuevaMuestra(PedidoNoConforme nuevamuestra);


    void removeNuevaMuestra(String nuevamuestraId);
    
    List<PedidoNoConforme> getPedidosAprocesar15hs();
    
    List<PedidoNoConforme> getPedidosAprocesar13hs();
    
    PedidoNoConforme getNuevaMuestraPorProtocolo(String numero);
  
}
